\section{JEdifPersistenceDetection}
JEdifPersistenceDetection determines additional detector locations necessary
for classifying persistent/non-persistent errors detected in a design. It is
designed to be run in multiple passes (i.e. one per replication type being
used). Results are saved in the replication description (.rdesc) file.

At times, the user may wish to disable detector insertion on certain nets. This
can be accomplished by inserting a \texttt{`do\_not\_detect'} property on
selected nets in the .edf file as follows:\\
\texttt{(property do\_not\_detect (boolean (true)))}\\

Nets with this property will not be considered valid cuts in the feedback
computation and will not have persistence detectors placed on them.

\begin{verbatim}
>java edu.byu.ece.edif.jedif.JEdifPersistenceDetection
Options:
  [-h|--help]
  [-v|--version]

  <input_file>
  (-r|--rep_desc) <rep_desc>
  (-c|--c_desc) <c_desc>

  --replication_type <replication_type>
  [--rail_type <rail_type>]
  (-p|--port_name) <port_name>
  [--no_obufs]
  [--no_oregs]
  [--clock_net <clock_net>]

  [--after_ff_cutset]
  [--before_ff_cutset]
  [--connectivity_cutset]
  [--basic_decomposition]
  [--highest_fanout_cutset]
  [--highest_ff_fanout_cutset]
  [--highest_ff_fanin_input_cutset]
  [--highest_ff_fanin_output_cutset]

  [--write_config <config_file>]
  [--use_config <config_file>]

  [--log <logfile>]
  [--debug[:<debug_log>]]
  [(-V|--verbose) <{1|2|3|4|5}>]
  [--append_log]
\end{verbatim}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{File Options}

\subsubsection{\texttt{<input\_file>}}
Filename and path to the .jedif source file.

\subsubsection{\texttt{(-r|--rep\_desc) <rep\_desc>}}
Filename and path to the replication description (.rdesc) file to be modified.

\subsubsection{\texttt{(-c|--c\_desc) <c\_desc>}}
Filename and path to the circuit description (.cdesc) file generated by
JEdifAnalyze.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\subsection{Detection Options}

\subsubsection{\texttt{--replication\_type <replication\_type>}}
Replication type to use for the current pass. Must be one of the following:
\texttt{triplication}, \texttt{duplication}.

\subsubsection{\texttt{--rail\_type <rail\_type>}}
Rail type. Must be one of the following: \texttt{single}, \texttt{dual}. The
default rail type is \texttt{single}. Single-rail detectors produce a $1$-bit
error code that is high when an error is detected. A dual-rail detector produces
a $2$-bit error code output that enables detection of comparator errors. The
`\texttt{$00$}' code indicates that no error has been detected. The
`\texttt{$11$}' code indicates that an error has been detected. The
`\texttt{$01$}' and `\texttt{$10$}' codes indicate that a comparator error has
been detected.

\subsubsection{\texttt{(-p|--port\_name) <port\_name>}}
Name of the port that should receive the detection error signals. If a port
with this name does not exist, it will be created. If the given port already
exists, it must have the correct bit-width ($1$ for single-rail detection, $2$
for dual-rail detection) or an error will occur. JEdifPersistenceDetection may
be run multiple times with different port names or with the same port name.
The results of all runs with the same port name will be merged into the port.

\subsubsection{\texttt{--no\_obufs}}
This option disables the defualt behavior of inserting output buffers on the
detection error signal outputs. This could be useful if the tool is not
operating on a top-level design.

\subsubsection{\texttt{--no\_oregs}}
This option disables the default behavior of inserting output registers on the
detection error signal outputs.

\subsubsection{\texttt{--clock\_net <clock\_net>}}
This option specifies a clock net to use for output registers. This option is
required unless output register insertion is disabled with the
\texttt{--no\_oregs} option. The name given should be the name of the clock net
\emph{after} replication (if different).

\subsection{Cutset Algorithms}
This tool uses a feedback cutset in order to determine locations where
detectors should be inserted to classify persistent errors. If a cutset was
already computed in a previous tool (i.e. JEdifVoterSelection) it will be
reused and the cutset options in this section will have no effect. The cutset
options use the same algorithms as the algorithms in the JEdifVoterSelection
section (except detectors are inserted instead of triplicated voters). See
the JEdifVoterSelection section for a thorough description of the algorithms.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\input{option_ConfigFile}
\input{option_Logfile}
